home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / JEditorPane$JEditorPaneAccessibleHypertextSupport.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  3.4 KB  |  112 lines

  1. package javax.swing;
  2.  
  3. import javax.accessibility.AccessibleHyperlink;
  4. import javax.accessibility.AccessibleHypertext;
  5. import javax.swing.text.AttributeSet;
  6. import javax.swing.text.BadLocationException;
  7. import javax.swing.text.Document;
  8. import javax.swing.text.Element;
  9. import javax.swing.text.ElementIterator;
  10. import javax.swing.text.JTextComponent;
  11. import javax.swing.text.html.HTML.Attribute;
  12. import javax.swing.text.html.HTML.Tag;
  13.  
  14. public class JEditorPane$JEditorPaneAccessibleHypertextSupport extends JEditorPane.AccessibleJEditorPane implements AccessibleHypertext {
  15.    // $FF: synthetic field
  16.    private final JEditorPane this$0;
  17.    JEditorPane.JEditorPaneAccessibleHypertextSupport.LinkVector hyperlinks;
  18.    boolean linksValid;
  19.  
  20.    public JEditorPane$JEditorPaneAccessibleHypertextSupport(JEditorPane var1) {
  21.       super(var1);
  22.       this.this$0 = var1;
  23.       this.linksValid = false;
  24.       this.hyperlinks = new JEditorPane.JEditorPaneAccessibleHypertextSupport.LinkVector(this);
  25.       Document var2 = ((JTextComponent)var1).getDocument();
  26.       if (var2 != null) {
  27.          var2.addDocumentListener(new JEditorPane.3(this));
  28.       }
  29.  
  30.    }
  31.  
  32.    // $FF: synthetic method
  33.    static JEditorPane access$0(JEditorPane$JEditorPaneAccessibleHypertextSupport var0) {
  34.       return var0.this$0;
  35.    }
  36.  
  37.    private void buildLinkTable() {
  38.       this.hyperlinks.removeAllElements();
  39.       Document var1 = this.this$0.getDocument();
  40.       if (var1 != null) {
  41.          ElementIterator var2 = new ElementIterator(var1);
  42.  
  43.          Element var3;
  44.          while((var3 = var2.next()) != null) {
  45.             if (var3.isLeaf()) {
  46.                AttributeSet var4 = var3.getAttributes();
  47.                AttributeSet var5 = (AttributeSet)var4.getAttribute(Tag.A);
  48.                String var6 = var5 != null ? (String)var5.getAttribute(Attribute.HREF) : null;
  49.                if (var6 != null) {
  50.                   this.hyperlinks.addElement(new JEditorPane.JEditorPaneAccessibleHypertextSupport.HTMLLink(this, var3));
  51.                }
  52.             }
  53.          }
  54.       }
  55.  
  56.       this.linksValid = true;
  57.    }
  58.  
  59.    public AccessibleHyperlink getLink(int var1) {
  60.       if (!this.linksValid) {
  61.          this.buildLinkTable();
  62.       }
  63.  
  64.       return var1 >= 0 && var1 < this.hyperlinks.size() ? (AccessibleHyperlink)this.hyperlinks.elementAt(var1) : null;
  65.    }
  66.  
  67.    public int getLinkCount() {
  68.       if (!this.linksValid) {
  69.          this.buildLinkTable();
  70.       }
  71.  
  72.       return this.hyperlinks.size();
  73.    }
  74.  
  75.    public int getLinkIndex(int var1) {
  76.       if (!this.linksValid) {
  77.          this.buildLinkTable();
  78.       }
  79.  
  80.       Element var2 = null;
  81.       Document var3 = this.this$0.getDocument();
  82.       int var4;
  83.       if (var3 != null) {
  84.          for(var2 = var3.getDefaultRootElement(); !var2.isLeaf(); var2 = var2.getElement(var4)) {
  85.             var4 = var2.getElementIndex(var1);
  86.          }
  87.       }
  88.  
  89.       return this.hyperlinks.baseElementIndex(var2);
  90.    }
  91.  
  92.    public String getLinkText(int var1) {
  93.       if (!this.linksValid) {
  94.          this.buildLinkTable();
  95.       }
  96.  
  97.       Element var2 = (Element)this.hyperlinks.elementAt(var1);
  98.       if (var2 != null) {
  99.          Document var3 = this.this$0.getDocument();
  100.          if (var3 != null) {
  101.             try {
  102.                return var3.getText(var2.getStartOffset(), var2.getEndOffset() - var2.getStartOffset());
  103.             } catch (BadLocationException var4) {
  104.                return null;
  105.             }
  106.          }
  107.       }
  108.  
  109.       return null;
  110.    }
  111. }
  112.